<!--
 * @Description: 
 * @version: 
 * @Author: liurui
 * @Date: 2024-02-04 16:02:02
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2024-02-04 16:30:07
-->
<template>
    <div>

    </div>
</template>

<script setup lang="ts">
// 实现一个泛型 AppendArgument<Fn, A>，
// 对于给定的函数类型 Fn，以及一个任意类型 A，返回一个新的函数 G。
// G 拥有 Fn 的所有参数并在末尾追加类型为 A 的参数。

type AppendArgument<T extends Function, A> = 
    T extends (...args: infer R) => infer P ? (x: A, ...args: [...R]) => P : never

type Fn = (a: number, b: string) => number;

type Result = AppendArgument<Fn, boolean>;
// 期望是 (a: number, b: string, x: boolean) => number
</script>

<style scoped>

</style> 